《计算机组成原理》重点内容
《计算机组成原理》重点内容与题型分类及答案
计算题
1. 将IEEE短浮点数转换成十进制数
01000011 10011001 00000000 00000000
在IEEE 754单精度(32位)浮点数格式中,各个部分所占据的位位置是固定的:
一个32位的二进制数通常从左到右编号为 Bit 31 到 Bit 0。
- S (符号位):
- 位于 第31位 (最左边的一位)。
- 占据 1位。
- E (指数位):
- 紧随符号位之后。
- 从 第30位到第23位。
- 占据 8位。
- M (尾数位/小数部分):
- 位于指数位之后。
- 从 第22位到第0位 (最右边的一位)。
- 占据 23位。
所以,结构是:
31 30 23 22 0
-----------------------------------------
S | E | M |
-----------------------------------------
1位 | 8位 | 23位 |
例题:将IEEE 754短浮点数(单精度)转换成十进制数
待转换的二进制数: 01000011 10011001 00000000 00000000
1. IEEE 754单精度(32位)浮点数结构
一个32位的二进制数,从左到右,其结构分解如下:
| 部分 | 位范围 | 位数 | 含义 |
|---|---|---|---|
| S | 31 | 1 | 符号位 |
| E | 30 ~ 23 | 8 | 指数位 |
| M | 22 ~ 0 | 23 | 尾数位/小数部分 |
- S (符号位):第31位。 表示正数, 表示负数。
- E (指数位):第30位至第23位。这是一个偏移指数 (Biased Exponent)。
- M (尾数位/小数部分):第22位至第0位。表示浮点数的小数部分,隐含一个整数位 。
2. 转换公式
对于规格化的IEEE 754单精度浮点数,其十进制值可由以下公式计算:
其中:
- :符号位的值 (0 或 1)。
- :规格化尾数, 是隐含的整数部分, 是23位尾数代表的二进制小数。
- :8位指数位转换成的十进制整数值。
- :对于IEEE 754单精度浮点数,。
转换示例:0 10000111 0011001 00000000 00000000
步骤1:分解浮点数
将给定的32位二进制数分解为S、E、M三部分:
步骤2:计算符号部分
由于 ,所以:
这表示该浮点数是一个正数。
步骤3:计算指数部分
将指数位 转换为十进制:
计算实际指数(无偏置):
步骤4:确定实际的尾数部分 (1.M)
根据规格化形式,实际尾数是 。尾数位 。
步骤5:组合计算十进制值
将所有部分代入公式:
将二进制数 乘以 ,相当于将小数点向右移动8位:
简化为二进制整数:
最后,将这个二进制整数转换为十进制:
所以,IEEE短浮点数 01000011 10011001 00000000 00000000 转换成十进制数是 306.0。
2. 将十进制数转换成IEEE短浮点数
第一章 概论
1. 填空题
-
问题:
MIPS是一个 __ 单位。
- 答案: 指令速度
-
问题:
计算机硬件的特点包括:程序内存、__、并行执行和相对快。
- 答案: 非易失性存储
-
问题:
从对各种对象的观察和计算机硬件系统设计引申出了__ 思想。
- 答案: 存储器
2. 选择题
-
问题:
下列关于计算机硬件特点的描述,错误的是:
- A. 程序内存
- B. 非易失性存储
- C. 串行执行
- D. 相对快
- 答案: C (应为并行执行)
-
问题:
计算机系统中,硬件与软件的关系是:
- A. 相互独立
- B. 相互对立
- C. 相互依存,不可分割
- D. 软件决定硬件
- 答案: C
3. 判断题
-
问题:
计算机的存储器层次结构是为了解决速度和容量的矛盾。(√/×)
- 答案: √
-
问题:
虚拟机构建在实际计算机之上,是为了简化程序设计。(√/×)
- 答案: √
第二章 数据的机器层次表示
1. 填空题
-
问题:
定点数的范围由其__决定。
- 答案: 位数(或字长)
-
问题:
计算机中,一个整数的表示范围取决于该数的__和__。
- 答案: 符号位,数值位位数
-
问题:
在计算机中,数据的机器层次表示包括定点表示法和__。
- 答案: 浮点表示法
-
问题:
浮点数的尾数通常采用__表示。
- 答案: 补码(或原码/反码,但通常是补码)
-
问题:
用于检测数据传输错误的校验码有奇偶校验码和__。
- 答案: 汉明校验码/循环冗余校验码 (任选其一)
2. 选择题
-
问题:
将一个二进制补码求反加一得到的是其:
- A. 原码
- B. 反码
- C. 补码本身
- D. 绝对值
- 答案: A (这是补码求原码的方法之一)
-
问题:
某浮点数采用移码表示阶码,其尾数采用补码表示,这种表示方法是:
- A. 定点表示
- B. 浮点表示
- C. BCD码表示
- D. ASCII码表示
- 答案: B
-
问题:
用于表示字符数据的标准编码是:
- A. BCD码
- B. ASCII码
- C. 原码
- D. 补码
- 答案: B
3. 判断题
-
问题:
浮点数的表示范围比定点数大。(√/×)
- 答案: √
-
问题:
原码、反码和补码都可以表示正数和负数。(√/×)
- 答案: √
-
问题:
在进行二进制补码加法运算时,如果结果超过了表示范围,就会发生溢出。(√/×)
- 答案: √
4. 应用题
-
问题:
给定一个8位带符号二进制数,求其补码表示范围。
-
答案:
8位带符号二进制数,最高位为符号位。
- 正数最大值:01111111 = 127
- 负数最小值:10000000 = -128
- 所以补码表示范围是 [-128, 127]。
-
-
问题:
计算 (9)10 + (-5)10 的补码加法运算过程(假设采用8位二进制)。
-
答案:
-
(9)10 的8位原码:00001001
-
(9)10 的8位补码:00001001
-
(-5)10 的8位原码:10000101
-
(-5)10 的8位反码:11111010
-
(-5)10 的8位补码:11111011
-
补码加法: 00001001 (9)
- 11111011 (-5)
100000100 (进位舍弃最高位1)
-
结果为 00000100,即 (4)10。
-
-
第三章 指令系统
1. 填空题
-
问题:
常见的寻址方式包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址和__寻址等。
- 答案: 相对(或基址)
-
问题:
指令系统主要由指令格式、寻址技术和__组成。
- 答案: 指令类型
2. 选择题
-
问题:
下列哪种寻址方式中,操作数的值直接包含在指令中?
- A. 直接寻址
- B. 寄存器寻址
- C. 立即寻址
- D. 相对寻址
- 答案: C
-
问题:
根据操作功能,指令可以分为数据传送类指令、运算类指令、程序控制类指令和__。
- A. 中断指令
- B. 输入输出类指令
- C. 逻辑运算指令
- D. 浮点运算指令
- 答案: B
3. 应用题
-
问题:
请列举至少5种常见的寻址方式,并简述其主要特点。
-
答案:
常见的寻址方式包括:
- 立即寻址: 操作数直接在指令中给出,无需访问内存,速度快。
- 直接寻址: 指令中给出操作数的有效地址,需一次内存访问。
- 寄存器寻址: 操作数在CPU内部寄存器中,无需访问内存,速度最快。
- 寄存器间接寻址: 指令中寄存器内容是操作数的地址,需一次内存访问。
- 相对寻址: 有效地址是指令地址与指令中给出的位移量之和,常用于程序跳转。
- 基址寻址: 有效地址是基址寄存器内容与指令中给出的位移量之和,常用于程序重定位。
- 变址寻址: 有效地址是变址寄存器内容与指令中给出的位移量之和,常用于处理数组。
-
第四章 基本的机器运算
1. 填空题
-
问题:
定点加减运算中,带符号数的加减法通常采用__实现。
- 答案: 补码
-
问题:
浮点运算通常分为对阶、__、规格化和舍入四步。
- 答案: 尾数加减(或尾数乘除)
2. 选择题
-
问题:
在补码加法中,判断溢出的方法是:
- A. 结果符号位与操作数符号位不同
- B. 结果符号位与两个操作数符号位都相同
- C. 两个符号位进位和最高数值位进位相同
- D. 两个符号位进位和最高数值位进位不同
- 答案: D
-
问题:
浮点数的“规格化”操作是为了:
- A. 提高运算速度
- B. 提高运算精度
- C. 扩大表示范围
- D. 方便硬件实现
- 答案: B
3. 应用题
-
问题:
简述补码一位乘法的基本原理。
- 答案: 补码一位乘法(例如Booth算法)的基本原理是:将乘数Y的末位与其右邻位(初始为0)进行比较,根据比较结果(00、01、10、11)来决定对被乘数X进行的操作(0、+X、-X、0),然后逻辑右移一位。通过一系列的加法(或减法)和移位操作,最终得到乘积的补码表示。这种方法避免了对乘数和被乘数进行符号位的特殊处理。
-
问题:
假设使用8位二进制补码表示整数,计算 (-10) + (-5) 的运算过程并判断是否溢出。
-
答案:
-
(-10)10 的8位原码:10001010
-
(-10)10 的8位补码:11110110
-
(-5)10 的8位原码:10000101
-
(-5)10 的8位补码:11111011
-
补码加法: 11110110 (-10)
- 11111011 (-5)
1 11110001 (最高位进位和符号位进位都为1,相同)
- 结果为 11110001,转换为十进制是 -15。
- 判断溢出:两个负数相加,结果为负数,且没有超出8位补码的表示范围([-128, 127])。或者看符号位进位和最高数值位进位,两者相同(都为1),所以没有溢出。
-
-
第五章 存储系统
1. 填空题
-
问题:
Cache是CPU与主存之间的一个高速小容量的__。
- 答案: 缓存(或存储器)
-
问题:
Cache的写策略主要有写回法和__。
- 答案: 写直通法(或写穿法)
-
问题:
为了解决CPU与主存的速度矛盾,计算机中引入了__。
- 答案: Cache (或高速缓冲存储器)
-
问题:
存储器层次结构利用了程序的__原理。
- 答案: 局部性
-
问题:
Cache的替换算法常用的有FIFO、LRU和__等。
- 答案: LFU(或随机替换)
2. 选择题
-
问题:
Cache和主存之间的数据传输通常以__为单位。
- A. 字
- B. 字节
- C. 块
- D. 位
- 答案: C
-
问题:
Cache缺失时,数据需要从__中获取。
- A. 寄存器
- B. 主存
- C. 磁盘
- D. 辅助存储器
- 答案: B
-
问题:
在Cache的写回(Write-Back)策略中,当CPU修改Cache中的数据时:
- A. 立即将数据写回主存
- B. 仅修改Cache中的数据,待该块被替换时才写回主存
- C. 同时修改Cache和主存
- D. 先修改主存,再修改Cache
- 答案: B
3. 判断题
-
问题:
Cache的命中率越高,CPU的平均访问时间越短。(√/×)
- 答案: √
-
问题:
局部性原理是Cache存在的基础。(√/×)
- 答案: √
-
问题:
虚拟存储器是实际存在的物理存储器。(√/×)
- 答案: × (虚拟存储器是一个逻辑概念,依赖于硬件和操作系统的支持)
4. 应用题
-
问题:
简述Cache的工作原理以及其存在的重要性。
- 答案: Cache的工作原理:Cache位于CPU与主存之间,利用程序的局部性原理,预先将主存中可能被CPU访问的数据块拷贝到Cache中。当CPU需要访问数据时,首先检查Cache。如果数据在Cache中(Cache命中),则直接从Cache获取,速度快;如果不在(Cache缺失),则从主存中读取,并将数据块连同其邻近数据一起调入Cache,以备后续访问。
- Cache存在的重要性:由于CPU的速度远高于主存,Cache作为高速缓存,可以有效弥补CPU与主存之间的速度差异,提高CPU的有效访问速度,从而提高整个计算机系统的性能。
-
问题:
假设一个计算机系统,Cache命中时间为10ns,Cache缺失时间为100ns,命中率为95%。计算平均访问时间。
- 答案:
- 平均访问时间 = 命中时间 × 命中率 + 缺失时间 × (1 - 命中率)
- 平均访问时间 = 10ns × 0.95 + 100ns × (1 - 0.95)
- 平均访问时间 = 9.5ns + 100ns × 0.05
- 平均访问时间 = 9.5ns + 5ns
- 平均访问时间 = 14.5ns
- 答案:
第六章 中央处理器
1. 填空题
-
问题:
CPU内部常用的寄存器除了通用寄存器,还有程序计数器PC、指令寄存器IR、存储器地址寄存器MAR和__。
- 答案: 存储器数据寄存器MDR
-
问题:
控制器的实现方法主要有两种:组合逻辑控制器和__。
- 答案: 微程序控制器
2. 选择题
-
问题:
计算机指令的执行过程是由__控制的。
- A. 算术逻辑单元 (ALU)
- B. 寄存器组
- C. 控制器
- D. 存储器
- 答案: C
-
问题:
微程序控制器的控制存储器中存放的是:
- A. 机器指令
- B. 微指令
- C. 数据
- D. 地址
- 答案: B
3. 应用题
-
问题:
简述微程序控制器的基本工作原理。
- 答案: 微程序控制器的基本工作原理是:将每条机器指令的执行过程分解成一系列更小的、基本的微操作。这些微操作序列以微指令的形式存储在控制存储器(CM)中,形成微程序。当CPU执行一条机器指令时,控制器根据指令的操作码,在控制存储器中找到对应的微程序的入口地址,然后逐条取出微指令并执行。每条微指令控制完成若干个基本的微操作,从而实现机器指令的功能。
-
问题:
假设CPU要执行一条取数指令
LOAD R1, [MEM_ADDR],请简述该指令在微程序控制器下的主要执行步骤(至少3步)。
- 答案:
- 取指令阶段:
- (MAR) ← (PC) // 将程序计数器PC中的地址送入MAR
- (MDR) ← (M) // 从MAR指向的内存地址取指令到MDR
- (IR) ← (MDR) // 将MDR中的指令送入指令寄存器IR
- (PC) ← (PC) + 1 // PC加1,指向下一条指令
- 指令译码与取操作数地址阶段:
- 根据IR中的操作码,控制器查找对应的微程序入口地址。
- (MAR) ← (IR中MEM_ADDR部分) // 将指令中的操作数地址送入MAR
- 取操作数与执行阶段:
- (MDR) ← (M) // 从MAR指向的内存地址取数据到MDR
- (R1) ← (MDR) // 将MDR中的数据送入寄存器R1
- 取指令阶段:
- 答案: